/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.myapp.struts.Solicitud;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.upload.FormFile;

/**
 *
 * @author Andreina Wilhelm
 */
public class realizarSolicitudForm extends org.apache.struts.action.ActionForm {

    private String correo;
    private String nombres;
    private String apellidos;
    private String cedula;
    private String cedulaNum;
    private String lugarNacimiento;
    private String paisNacimiento;
    private String nacionalidad;
    private String nacionalizado;
    private String numGacetaOficial;
    private String fechaGacetaOficial;
    private String fechaNacimiento;
    private String edad;
    private String sexo;
    private String estadoCivil;
    private String direcHabitacion;
    private String tlfHabitacion;
    private String direcEnvioCorresp;
    private String tlfEnvioCorresp;
    private String direcCasosEsp;
    private String tlfCasosEsp;
    private String personaCasosEsp;
    private String nexoPersonaCasosEsp;
    private String estudioSupInstituto;
    private String estudioSupInstLugar;
    private String estudioSupInstPais;
    private String estudioSupRealizado;
    private String estudioSupTitulo;
    private String equivSolicitada;
    private String carreraSolicitadaText;
    private String carreraSolicitadaSeleccion;
    
    
    // DOCUMENTOS
    private FormFile docFoto; // foto
    private FormFile docCartaSolicitud; // documento carta de solicitud
    private FormFile docCedula; // documento cedula
    private FormFile docCertifNotas; // documento notas
    private FormFile docProgEstOrigen; // documento programas de estudio origen
    private FormFile docBuenaConducta; // documento buena conducta
    private FormFile docTitulo; // documento titulo de tecnico superior o constancia de culminacion
    private FormFile docConstPuesto; // documento constancia del puesto de promocion   
    private FormFile docLegYTradNotas; // documento legalizacion y traducciones de notas y programas
    private FormFile docReciboRevision; // documento recibo por revision de documentos
    private FormFile docPortafolioTrab; // documento portafolio de trabajo solo para aspirantes de arquitectura
    
   

    public String getCorreo() {
        return correo;
    }

    public void setCorreo(String correo) {
        this.correo = correo;
    }

    public String getNombres() {
        return nombres;
    }

    public void setNombres(String nombres) {
        this.nombres = nombres;
    }

    public String getApellidos() {
        return apellidos;
    }

    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }

    public String getCedula() {
        return cedula;
    }

    public void setCedula(String cedula) {
        this.cedula = cedula;
    }

    public String getCedulaNum() {
        return cedulaNum;
    }

    public void setCedulaNum(String cedulaNum) {
        this.cedulaNum = cedulaNum;
    }

    public String getLugarNacimiento() {
        return lugarNacimiento;
    }

    public void setLugarNacimiento(String lugarNacimiento) {
        this.lugarNacimiento = lugarNacimiento;
    }

    public String getPaisNacimiento() {
        return paisNacimiento;
    }

    public void setPaisNacimiento(String paisNacimiento) {
        this.paisNacimiento = paisNacimiento;
    }

    public String getNacionalidad() {
        return nacionalidad;
    }

    public void setNacionalidad(String nacionalidad) {
        this.nacionalidad = nacionalidad;
    }

    public String getNacionalizado() {
        return nacionalizado;
    }

    public void setNacionalizado(String nacionalizado) {
        this.nacionalizado = nacionalizado;
    }

    public String getNumGacetaOficial() {
        return numGacetaOficial;
    }

    public void setNumGacetaOficial(String numGacetaOficial) {
        this.numGacetaOficial = numGacetaOficial;
    }

    public String getFechaGacetaOficial() {
        return fechaGacetaOficial;
    }

    public void setFechaGacetaOficial(String fechaGacetaOficial) {
        this.fechaGacetaOficial = fechaGacetaOficial;
    }

    public String getFechaNacimiento() {
        return fechaNacimiento;
    }

    public void setFechaNacimiento(String fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }

    public String getEdad() {
        return edad;
    }

    public void setEdad(String edad) {
        this.edad = edad;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public String getEstadoCivil() {
        return estadoCivil;
    }

    public void setEstadoCivil(String estadoCivil) {
        this.estadoCivil = estadoCivil;
    }

    public String getDirecHabitacion() {
        return direcHabitacion;
    }

    public void setDirecHabitacion(String direcHabitacion) {
        this.direcHabitacion = direcHabitacion;
    }

    public String getTlfHabitacion() {
        return tlfHabitacion;
    }

    public void setTlfHabitacion(String tlfHabitacion) {
        this.tlfHabitacion = tlfHabitacion;
    }

    public String getDirecEnvioCorresp() {
        return direcEnvioCorresp;
    }

    public void setDirecEnvioCorresp(String direcEnvioCorresp) {
        this.direcEnvioCorresp = direcEnvioCorresp;
    }

    public String getTlfEnvioCorresp() {
        return tlfEnvioCorresp;
    }

    public void setTlfEnvioCorresp(String tlfEnvioCorresp) {
        this.tlfEnvioCorresp = tlfEnvioCorresp;
    }

    public String getDirecCasosEsp() {
        return direcCasosEsp;
    }

    public void setDirecCasosEsp(String direcCasosEsp) {
        this.direcCasosEsp = direcCasosEsp;
    }

    public String getTlfCasosEsp() {
        return tlfCasosEsp;
    }

    public void setTlfCasosEsp(String tlfCasosEsp) {
        this.tlfCasosEsp = tlfCasosEsp;
    }

    public String getPersonaCasosEsp() {
        return personaCasosEsp;
    }

    public void setPersonaCasosEsp(String personaCasosEsp) {
        this.personaCasosEsp = personaCasosEsp;
    }

    public String getNexoPersonaCasosEsp() {
        return nexoPersonaCasosEsp;
    }

    public void setNexoPersonaCasosEsp(String nexoPersonaCasosEsp) {
        this.nexoPersonaCasosEsp = nexoPersonaCasosEsp;
    }

    public String getEstudioSupInstituto() {
        return estudioSupInstituto;
    }

    public void setEstudioSupInstituto(String estudioSupInstituto) {
        this.estudioSupInstituto = estudioSupInstituto;
    }

    public String getEstudioSupInstLugar() {
        return estudioSupInstLugar;
    }

    public void setEstudioSupInstLugar(String estudioSupInstLugar) {
        this.estudioSupInstLugar = estudioSupInstLugar;
    }

    public String getEstudioSupInstPais() {
        return estudioSupInstPais;
    }

    public void setEstudioSupInstPais(String estudioSupInstPais) {
        this.estudioSupInstPais = estudioSupInstPais;
    }

    public String getEstudioSupRealizado() {
        return estudioSupRealizado;
    }

    public void setEstudioSupRealizado(String estudioSupRealizado) {
        this.estudioSupRealizado = estudioSupRealizado;
    }

    public String getEstudioSupTitulo() {
        return estudioSupTitulo;
    }

    public void setEstudioSupTitulo(String estudioSupTitulo) {
        this.estudioSupTitulo = estudioSupTitulo;
    }

    public String getEquivSolicitada() {
        return equivSolicitada;
    }

    public void setEquivSolicitada(String equivSolicitada) {
        this.equivSolicitada = equivSolicitada;
    }

    public String getCarreraSolicitadaText() {
        return carreraSolicitadaText;
    }

    public void setCarreraSolicitadaText(String carreraSolicitadaText) {
        this.carreraSolicitadaText = carreraSolicitadaText;
    }

    public String getCarreraSolicitadaSeleccion() {
        return carreraSolicitadaSeleccion;
    }

    public void setCarreraSolicitadaSeleccion(String carreraSolicitadaSeleccion) {
        this.carreraSolicitadaSeleccion = carreraSolicitadaSeleccion;
    }

    

   
    
    
     // DOCUMENTOS

    public FormFile getDocFoto() {
        return docFoto;
    }

    public void setDocFoto(FormFile docFoto) {
        this.docFoto = docFoto;
    }

    public FormFile getDocCartaSolicitud() {
        return docCartaSolicitud;
    }

    public void setDocCartaSolicitud(FormFile docCartaSolicitud) {
        this.docCartaSolicitud = docCartaSolicitud;
    }

    public FormFile getDocCedula() {
        return docCedula;
    }

    public void setDocCedula(FormFile docCedula) {
        this.docCedula = docCedula;
    }

    public FormFile getDocCertifNotas() {
        return docCertifNotas;
    }

    public void setDocCertifNotas(FormFile docCertifNotas) {
        this.docCertifNotas = docCertifNotas;
    }

    public FormFile getDocProgEstOrigen() {
        return docProgEstOrigen;
    }

    public void setDocProgEstOrigen(FormFile docProgEstOrigen) {
        this.docProgEstOrigen = docProgEstOrigen;
    }

    public FormFile getDocBuenaConducta() {
        return docBuenaConducta;
    }

    public void setDocBuenaConducta(FormFile docBuenaConducta) {
        this.docBuenaConducta = docBuenaConducta;
    }

    public FormFile getDocTitulo() {
        return docTitulo;
    }

    public void setDocTitulo(FormFile docTitulo) {
        this.docTitulo = docTitulo;
    }

    public FormFile getDocConstPuesto() {
        return docConstPuesto;
    }

    public void setDocConstPuesto(FormFile docConstPuesto) {
        this.docConstPuesto = docConstPuesto;
    }

    public FormFile getDocLegYTradNotas() {
        return docLegYTradNotas;
    }

    public void setDocLegYTradNotas(FormFile docLegYTradNotas) {
        this.docLegYTradNotas = docLegYTradNotas;
    }

    public FormFile getDocReciboRevision() {
        return docReciboRevision;
    }

    public void setDocReciboRevision(FormFile docReciboRevision) {
        this.docReciboRevision = docReciboRevision;
    }

    public FormFile getDocPortafolioTrab() {
        return docPortafolioTrab;
    }

    public void setDocPortafolioTrab(FormFile docPortafolioTrab) {
        this.docPortafolioTrab = docPortafolioTrab;
    }

    public realizarSolicitudForm() {
        super();
        // TODO Auto-generated constructor stub
    }
    
    
    

    /**
     * This is the action called from the Struts framework.
     *
     * @param mapping The ActionMapping used to select this instance.
     * @param request The HTTP Request we are processing.
     * @return
     */
    @Override
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {

        // Nueva instancia de ActionErrors
        ActionErrors errors = new ActionErrors();

        // validar campo de nombres este lleno
        if (this.nombres == null || this.nombres.equals("")) {
            errors.add("err_nom", new ActionMessage("errors.required"));
        }

        // validar campo de apellidos este lleno
        if (this.apellidos == null || this.apellidos.equals("")) {
            errors.add("err_ape", new ActionMessage("errors.required"));
        }

        // VALIDAR FORMATO, numero
        // validar campo de cedulaNum este lleno
        if (this.cedulaNum == null || this.cedulaNum.equals("")) {
            errors.add("err_ci", new ActionMessage("errors.required"));
        } else if (!this.cedulaNum.matches("([0-9]*)")) {
            errors.add("err_ci", new ActionMessage("errors.integer"));
        }

        // validar campo de lugarNacimiento este lleno
        if (this.lugarNacimiento == null || this.lugarNacimiento.equals("")) {
            errors.add("err_lugNac", new ActionMessage("errors.required"));
        }

        // validar campo de nacionalidad este lleno
        if (this.nacionalidad == null || this.nacionalidad.equals("")) {
            errors.add("err_nac", new ActionMessage("errors.required"));
        }

        // Si nacionalizado es true valido los campos de gaceta
        if (this.nacionalizado.equals("Si")) {

            // VALIDAR FORMATO, numero
            // validar campo de numero gaceta oficial este lleno
            if (this.numGacetaOficial == null || this.numGacetaOficial.equals("")) {
                errors.add("err_numGO", new ActionMessage("errors.required"));
            } else if (!this.numGacetaOficial.matches("([0-9]*)")) {
                errors.add("err_numGO", new ActionMessage("errors.integer"));
            }

            // VALIDAR FORMATO, fecha DD/MM/AAAA
            // validar campo de numero gaceta oficial este lleno
            if (this.fechaGacetaOficial == null || this.fechaGacetaOficial.equals("") || this.fechaGacetaOficial.equals("DD/MM/AAAA")) {
                errors.add("err_fecGO", new ActionMessage("errors.required"));
            } else if (!this.fechaGacetaOficial.matches("([1-9]|[0][1-9]|[12][0-9]|3[01])[/]([1-9]|[0][1-9]||1[012])[/]([0-9]{4})")) {
                errors.add("err_fecGO", new ActionMessage("errors.formatoFecha"));
            }
        }

        // VALIDAR FORMATO, fecha DD/MM/AAAA
        // validar campo de fecha de nacimiento este lleno
        if (this.fechaNacimiento == null || this.fechaNacimiento.equals("") || this.fechaNacimiento.equals("DD/MM/AAAA")) {
            errors.add("err_fnac", new ActionMessage("errors.required"));
        } else if (!this.fechaNacimiento.matches("([1-9]|[0][1-9]|[12][0-9]|3[01])[/]([1-9]|[0][1-9]||1[012])[/]([0-9]{4})")) {
            errors.add("err_fnac", new ActionMessage("errors.formatoFecha"));
        }

        // VALIDAR FORMATO, numero
        // validar campo de edad este lleno
        if (this.edad == null || this.edad.equals("")) {
            errors.add("err_edad", new ActionMessage("errors.required"));
        } else if (!this.edad.matches("([0-9]*)")) {
            errors.add("err_edad", new ActionMessage("errors.integer"));
        }

        // validar campo de direccion de habitacion este lleno
        if (this.direcHabitacion == null || this.direcHabitacion.equals("")) {
            errors.add("err_direcHa", new ActionMessage("errors.required"));
        }

        // VALIDAR FORMATO, numero
        // validar campo de telefono de habitacion este lleno
        if (this.tlfHabitacion == null || this.tlfHabitacion.equals("")) {
            errors.add("err_tlfHa", new ActionMessage("errors.required"));
        } else if (!this.tlfHabitacion.matches("([0-9]*)")) {
            errors.add("err_tlfHa", new ActionMessage("errors.integer"));
        }

        // validar campo de direccion de envio este lleno
        if (this.direcEnvioCorresp == null || this.direcEnvioCorresp.equals("")) {
            errors.add("err_direcEC", new ActionMessage("errors.required"));
        }

        // VALIDAR FORMATO, numero
        // validar campo de telefono de envio este lleno
        if (this.tlfEnvioCorresp == null || this.tlfEnvioCorresp.equals("")) {
            errors.add("err_tlfEC", new ActionMessage("errors.required"));
        } else if (!this.tlfEnvioCorresp.matches("([0-9]*)")) {
            errors.add("err_tlfEC", new ActionMessage("errors.integer"));
        }

        // validar campo de direccion de casos especiales este lleno
        if (this.direcCasosEsp == null || this.direcCasosEsp.equals("")) {
            errors.add("err_direcCE", new ActionMessage("errors.required"));
        }

        // VALIDAR FORMATO, numero
        // validar campo de telefono de casos especiales este lleno
        if (this.tlfCasosEsp == null || this.tlfCasosEsp.equals("")) {
            errors.add("err_tlfCE", new ActionMessage("errors.required"));
        } else if (!this.tlfCasosEsp.matches("([0-9]*)")) {
            errors.add("err_tlfCE", new ActionMessage("errors.integer"));
        }

        // validar campo de persona de casos especiales este lleno
        if (this.personaCasosEsp == null || this.personaCasosEsp.equals("")) {
            errors.add("err_perCE", new ActionMessage("errors.required"));
        }

        // validar campo de nexo de persona de casos especiales este lleno
        if (this.nexoPersonaCasosEsp == null || this.nexoPersonaCasosEsp.equals("")) {
            errors.add("err_neperCE", new ActionMessage("errors.required"));
        }

        // validar campo de estudio superior instituto este lleno
        if (this.estudioSupInstituto == null || this.estudioSupInstituto.equals("")) {
            errors.add("err_estSupInt", new ActionMessage("errors.required"));
        }

        // validar campo de estudio superior instituto lugar este lleno
        if (this.estudioSupInstLugar == null || this.estudioSupInstLugar.equals("")) {
            errors.add("err_estSupIntLug", new ActionMessage("errors.required"));
        }

        // validar campo de estudio superior realizado este lleno
        if (this.estudioSupRealizado == null || this.estudioSupRealizado.equals("")) {
            errors.add("err_estSupRe", new ActionMessage("errors.required"));
        }

        // validar campo de estudio superior titulo este lleno
        if (this.estudioSupTitulo == null || this.estudioSupTitulo.equals("")) {
            errors.add("err_estSupTi", new ActionMessage("errors.required"));
        }

        
        // validar campo de carrera solicitada este lleno y no sea Seleccione... 
        // Reviso campo de seleccion
        if (this.equivSolicitada.equals("2"))
        {
            if (this.carreraSolicitadaSeleccion.equals("Seleccione...")) {
                errors.add("err_carSoli", new ActionMessage("errors.required"));
            }
            else{
                // validar campo de documento portafolio de trabajo solo para aspirantes de arquitectura este lleno
                if (this.carreraSolicitadaSeleccion.toLowerCase().equals("arquitectura")) 
                { 
                    if (this.docPortafolioTrab.getFileName().equals("") || this.docPortafolioTrab.getFileSize()== 0) {
                        errors.add("err_docPT", new ActionMessage("errors.required"));
                    }
                    else if (!this.docPortafolioTrab.getContentType().equals("application/pdf")) {
                        errors.add("err_docPT", new ActionMessage("errors.formatoDoc", ".pdf"));
                    }
                }
            }
        } 
        else
        {
            if (this.carreraSolicitadaText == null || this.carreraSolicitadaText.equals("")) {
                errors.add("err_carSoli", new ActionMessage("errors.required"));
            } 
        }
          
          
        
        
        
        
        
        // DOCUMENTOS
        
        // validar campo de documento foto este lleno         
        if (this.docFoto.getFileName().equals("") || this.docFoto.getFileSize()== 0) {
            errors.add("err_foto", new ActionMessage("errors.required"));
        }
        else if (!this.docFoto.getContentType().equals("image/jpeg")) {
            errors.add("err_foto", new ActionMessage("errors.formatoDoc", ".jpg"));
        }
        
                
        // validar campo de documento carta  de solicitud este lleno
        if (this.docCartaSolicitud.getFileName().equals("") || this.docCartaSolicitud.getFileSize()== 0) {
            errors.add("err_cartaSol", new ActionMessage("errors.required"));
        }
        else if (!this.docCartaSolicitud.getContentType().equals("application/pdf")) {
            errors.add("err_cartaSol", new ActionMessage("errors.formatoDoc", ".pdf"));
        }
        
         
        // validar campo de documento cedula este lleno
        if (this.docCedula.getFileName().equals("") || this.docCedula.getFileSize()== 0) {
            errors.add("err_docCI", new ActionMessage("errors.required"));
        }
        else if (!this.docCedula.getContentType().equals("image/jpeg")) {
            errors.add("err_docCI", new ActionMessage("errors.formatoDoc", ".jpg"));
        }
                
         
        // validar campo de documento certificado de notas este lleno
        if (this.docCertifNotas.getFileName().equals("") || this.docCertifNotas.getFileSize()== 0) {
            errors.add("err_docCC", new ActionMessage("errors.required"));
        }
        else if (!this.docCertifNotas.getContentType().equals("application/pdf")) {
            errors.add("err_docCC", new ActionMessage("errors.formatoDoc", ".pdf"));
        }
        
        
        // validar campo de documento programas de asignatura este lleno
        if (this.docProgEstOrigen.getFileName().equals("") || this.docProgEstOrigen.getFileSize()== 0) {
            errors.add("err_progAsig", new ActionMessage("errors.required"));
        }
        else if (!this.docProgEstOrigen.getContentType().equals("application/pdf")) {
            errors.add("err_progAsig", new ActionMessage("errors.formatoDoc", ".pdf"));
        }
                
        
        // validar campo de documento carta de buena conducta este lleno
        if (this.docBuenaConducta.getFileName().equals("") || this.docBuenaConducta.getFileSize()== 0) {
            errors.add("err_docCBC", new ActionMessage("errors.required"));
        }
        else if (!this.docBuenaConducta.getContentType().equals("application/pdf")) {
            errors.add("err_docCBC", new ActionMessage("errors.formatoDoc", ".pdf"));
        }
                
         
        // validar campo de titulo este lleno
        if (this.docTitulo.getFileName().equals("") || this.docTitulo.getFileSize()== 0) {
            errors.add("err_docTitulo", new ActionMessage("errors.required"));
        }
        else if (!this.docTitulo.getContentType().equals("application/pdf")) {
            errors.add("err_docTitulo", new ActionMessage("errors.formatoDoc", ".pdf"));
        }
        
        
        // validar campo de documento constancia del puesto de promocion este lleno
        if (this.docConstPuesto.getFileName().equals("") || this.docConstPuesto.getFileSize()== 0) {
            errors.add("err_docCPP", new ActionMessage("errors.required"));
        }
        else if (!this.docConstPuesto.getContentType().equals("application/pdf")) {
            errors.add("err_docCPP", new ActionMessage("errors.formatoDoc", ".pdf"));
        }
                
       
        // validar campo de documento legalizacion y traducciones de notas y programas este lleno
        if (!this.docLegYTradNotas.getFileName().equals("") || this.docLegYTradNotas.getFileSize()!= 0) {
            if (!this.docLegYTradNotas.getContentType().equals("application/pdf")) {
                errors.add("err_docLTNP", new ActionMessage("errors.formatoDoc", ".pdf"));
            }            
        }
        
         
        
         // validar campo de documento recibo por revision de documentos este lleno
        if (this.docReciboRevision.getFileName().equals("") || this.docReciboRevision.getFileSize()== 0) {
            errors.add("err_docRecibo", new ActionMessage("errors.required"));
        }
        else if (!this.docReciboRevision.getContentType().equals("application/pdf")) {
            errors.add("err_docRecibo", new ActionMessage("errors.formatoDoc", ".pdf"));
        }
        
        
        return errors;
    }

    
    
    @Override
    public void reset(ActionMapping mapping, HttpServletRequest request) {
        // reset properties
        correo = "";
        nombres = "";
        apellidos = "";
        cedula = "";
        cedulaNum = "";
        lugarNacimiento = "";
        paisNacimiento = "";
        nacionalidad = "";
        nacionalizado = "";
        numGacetaOficial = "";
        fechaGacetaOficial = "";
        fechaNacimiento = "";
        edad = "";
        sexo = "";
        estadoCivil = "";
        direcHabitacion = "";
        tlfHabitacion = "";
        direcEnvioCorresp = "";
        tlfEnvioCorresp = "";
        direcCasosEsp = "";
        tlfCasosEsp = "";
        personaCasosEsp = "";
        nexoPersonaCasosEsp = "";
        estudioSupInstituto = "";
        estudioSupInstLugar = "";
        estudioSupInstPais = "";
        estudioSupRealizado = "";
        estudioSupTitulo = "";
        carreraSolicitadaText = "";
        carreraSolicitadaSeleccion = "";
        docCartaSolicitud= null;
        docCedula= null;
        docCertifNotas= null;
        docProgEstOrigen= null;
        docBuenaConducta= null;
        docTitulo= null;
        docConstPuesto= null;
        docFoto= null;
        docPortafolioTrab= null;
        docReciboRevision= null;
    }
}
